In computing, one or more conventions or standards are typically adopted for governing the way machines coupled to a network communicate with each other and/or transfer data between each other. Such a convention or standard is herein referred to as a protocol. Conventionally, many protocols define rules that govern the syntax, semantics, and synchronization of communication. Protocols may be implemented by hardware, software, or a combination of the two. At the lowest level, a protocol defines the behavior of a hardware connection.
A commonly used protocol is transfer control protocol (TCP). TCP is one of the core protocols of the protocol suite used in Internet. TCP provides reliable, in-order delivery of a stream of bytes, making it suitable for applications, such as file transfer, electronic mail delivery, etc. Because of the wide usage of TCP, many TCP-based protocols have been subsequently developed, such as Post Office Protocol (POP), Secure Socket Layer (SSL), etc. To ensure these protocols work as intended, some software developers may manually emulate requests and responses between machines over a network to test different aspects of the protocols. However, this approach is tedious and time-consuming.
Another conventional ad-hoc approach involves writing a new library in a computer programming language (such as, C or Java) to implement new protocols. Again, this approach is also time consuming and error prone. If the protocol itself is being developed in tandem to protocol library (for example, when developing a new client-server communication mechanism in tandem with developing the client and/or server), it is not likely possible to validate that the protocol itself meets its intended objectives until the library is fairly substantially developed. As a result, prototyping the protocol may be slowed down.